package com.whfc.ms.api.mach.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.entity.dto.OssPathDTO;
import com.whfc.mach.dto.AppMachDTO;
import com.whfc.mach.dto.maintain.MaintainDTO;
import com.whfc.mach.param.maintain.MachMaintainAddParam;
import com.whfc.mach.param.maintain.MachMaintainEditParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;
import java.util.Map;

/**
 * 设备保养
 *
 * @author sun_guodong
 * @date 2021-08-09
 */
public interface MsMachMaintainService {
    /**
     * 上传保养文件
     *
     * @param file
     * @return
     */
    OssPathDTO upload(MultipartFile file);

    /**
     * 获取文件上传配置
     *
     * @param name
     * @return
     */
    Map<String, String> getConfig(String name);

    /**
     * 设备保养记录列表
     *
     * @param deptId
     * @param pageNum
     * @param pageSize
     * @param startDate
     * @param endDate
     * @param keyword
     * @return
     */
    PageData<MaintainDTO> list(Integer deptId, Integer pageNum, Integer pageSize, Date startDate, Date endDate, String keyword, Integer machType);

    /**
     * 设备保养记录列表(单台设备)
     *
     * @param machId
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<MaintainDTO> listByMachId(Integer machId, Integer pageNum, Integer pageSize);

    /**
     * 设备保养详情
     *
     * @param maintainId
     * @return
     */
    MaintainDTO detail(Integer maintainId);

    /**
     * 添加保养记录
     *
     * @param param
     */
    void add(MachMaintainAddParam param);

    /**
     * 编辑保养记录
     *
     * @param param
     */
    void edit(MachMaintainEditParam param);

    /**
     * 删除保养记录
     *
     * @param maintainId
     */
    void del(Integer maintainId);

    /**
     * 导出保养记录
     *
     * @param deptId
     * @param startDate
     * @param endDate
     * @param keyword
     */
    void export(Integer deptId, Date startDate, Date endDate, String keyword, Integer machType);

    /**
     * 获取可供选择保养的设备
     *
     * @param deptId
     * @return
     */
    ListData<AppMachDTO> getAvailableMach(Integer deptId, Integer machType);
}
